﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using Suspiros_ObjetosNegocio;

namespace Suspiros_Persistencia
{
    public class CarritoDAO
    {
        Conexion conn = new Conexion();

        //Agregar producto al carrito
        public int agregarProductoCarrito(int idCarrito, int idProducto)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_agregarProductoCarrito", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@idCarrito", idCarrito);
            cmdSP.Parameters.AddWithValue("@idProducto", idProducto);
            //Resultados
            int id = (int)cmdSP.ExecuteScalar();
            miConn.Close();
            return id;
        }

        //Agregar direccion al carrito
        public void agregarDireccionCarrito(int idCarrito, int idDireccion)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_actualizarDireccionCarrito", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@id", idCarrito);
            cmdSP.Parameters.AddWithValue("@idDireccion", idDireccion);
            //Resultados
            cmdSP.ExecuteNonQuery();
            miConn.Close();
        }

        //Agregar pago al carrito
        public void agregarPagoCarrito(int idCarrito, int idPago)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_actualizarPagoCarrito", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@id", idCarrito);
            cmdSP.Parameters.AddWithValue("@idPago", idPago);
            //Resultados
            cmdSP.ExecuteNonQuery();
            miConn.Close();
        }

        //Agregar pago al carrito
        public void agregarOrdenCarrito(int idCarrito, int idOrden)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_actualizarOrdenCarrito", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@id", idCarrito);
            cmdSP.Parameters.AddWithValue("@idOrden", idOrden);
            //Resultados
            cmdSP.ExecuteNonQuery();
            miConn.Close();
        }

        //Obtener ids de productos por carrito
        public DataSet obtenerProductosCarrito(Carrito carrito)
        {
            SqlDataAdapter miDA = new SqlDataAdapter();
            DataSet miDataSet = new DataSet();
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_productos", miConn);
            //cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@accion", 6);
            cmdSP.Parameters.AddWithValue("@idcarrito", carrito.Id);
            //Resultados
            miDA.SelectCommand = cmdSP;
            miDA.SelectCommand.CommandType = CommandType.StoredProcedure;
            miDA.Fill(miDataSet, "CarritoProductos");
            miConn.Close();
            return miDataSet;
        }

        //
        public DataSet obtenerCarritoByUsuario(int idUsuario)
        {
            SqlDataAdapter miDA = new SqlDataAdapter();
            DataSet miDataSet = new DataSet();
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_obtenerCarritoByUsuario", miConn);
            //cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@idUsuario", idUsuario);
            //Resultados
            miDA.SelectCommand = cmdSP;
            miDA.SelectCommand.CommandType = CommandType.StoredProcedure;
            miDA.Fill(miDataSet, "Carrito");
            miConn.Close();
            return miDataSet;
        }


        public int agregarCarritoByUsuario(int idUsuario)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_agregarCarritoUsuario", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@idUsuario", idUsuario);
            //Resultados
            //Resultados
            int id = (int)cmdSP.ExecuteScalar();
            miConn.Close();
            return id;
        }

        public int obtenerCarritoActivo(int idUsuario)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_obtenerCarritoActivo", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@idUsuario", idUsuario);
            //Resultados
            //Resultados
            int id = (int)cmdSP.ExecuteScalar();
            miConn.Close();
            return id;
        }

        public int obtenerProductoCarritoActivo(int idCarrito, int idProducto)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_obtenerProductoCarritoActivo", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@idCarrito", idCarrito);
            cmdSP.Parameters.AddWithValue("@idProducto", idProducto);
            //Resultados
            //Resultados
            int id = (int)cmdSP.ExecuteScalar();
            miConn.Close();
            return id;
        }

        public int obtenerIDCarritoByUsuario(int idUsuario)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_obtenerIDCarritoByUsuario", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@idUsuario", idUsuario);
            //Resultados
            //Resultados
            int id = (int)cmdSP.ExecuteScalar();
            miConn.Close();
            return id;
        }


        public DataSet obtenerCarritoProductosByCarrito(int idCarrito)
        {
            SqlDataAdapter miDA = new SqlDataAdapter();
            DataSet miDataSet = new DataSet();
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_obtenerCarritoProductosByCarrito", miConn);
            //cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@idCarrito", idCarrito);
            //Resultados
            miDA.SelectCommand = cmdSP;
            miDA.SelectCommand.CommandType = CommandType.StoredProcedure;
            miDA.Fill(miDataSet, "CarritoProductos");
            miConn.Close();
            return miDataSet;
        }

        //Agregar producto al carrito
        public void actualizaProductoCarrito(int idCarrito, int idProducto, int cantidad, int status)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_actualizarProductoCarrito", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@idCarrito", idCarrito);
            cmdSP.Parameters.AddWithValue("@idProducto", idProducto);
            cmdSP.Parameters.AddWithValue("@cantidad", cantidad);
            cmdSP.Parameters.AddWithValue("@status", status);
            //Resultados
            cmdSP.ExecuteNonQuery();
            miConn.Close();
        }

        //Agregar producto al carrito
        public void actualizaStatusCarrito(int idCarrito)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_actualizarStatusCarrito", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@id", idCarrito);
            //Resultados
            cmdSP.ExecuteNonQuery();
            miConn.Close();
        }

        //Agregar producto al carrito
        public void eliminaProductoCarrito(int idCarrito, int idProducto)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_eliminarProductoCarrito", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@idCarrito", idCarrito);
            cmdSP.Parameters.AddWithValue("@idProducto", idProducto);
            //Resultados
            cmdSP.ExecuteNonQuery();
            miConn.Close();
        }
    }
}
